﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ConsoleConsumeAstoria.DataService;
using System.Data.Entity;
using System.Data.Services.Client;

namespace ConsoleConsumeAstoria {
    /// <summary>
    /// Ví dụ sử dụng WCF Data Service, tên gọi trước là ADO.net Data Service, mã hiệu Astoria    
    /// </summary>
    class DemoWCFDataService {
        public const string baseAddress = "http://localhost:8000/DataService.svc";


        /// <summary>
        /// Xem them tai day http://msdn.microsoft.com/en-us/library/dd756367(VS.100).aspx
        /// </summary>
        public void demoQuery(int ArtistID) {
            var context = new ChinookEntities(new Uri(baseAddress));
            var result = context.Artists.Expand("Albums").Where(p => p.ArtistId == ArtistID).SingleOrDefault();
            Console.WriteLine("{0}", result.Name);
            foreach (var item in result.Albums) {
                Console.WriteLine("  {0}", item.Title);
            }
        }
        /// <summary>
        /// Để chạy được ADD, UPDATE, DELETE cần điều chỉnh sang mode EntitySetRights.All
        /// config.SetEntitySetAccessRule("*", EntitySetRights.All);
        /// </summary>
        public void AddNewArtist() {
            var context = new ChinookEntities(new Uri(baseAddress));
            Artist artist = new Artist { Name = "Bang Kieu"};
            context.AddToArtists(artist);            
            context.SaveChanges();
            ///Lấy giá trị của ArtistID là auto identity
            Console.WriteLine("New artist ID {0}", artist.ArtistId);
        }
        /// <summary>
        /// http://msdn.microsoft.com/en-us/library/dd758799(v=VS.100).aspx
        /// 
        /// </summary>
        public void AddNewArtistWithAlbum() {
            var context = new ChinookEntities(new Uri(baseAddress));            
            Artist artist = new Artist { Name = "Thu Phuong3" };                        
            
            context.AddToArtists(artist);
            context.SaveChanges();
            //Phải tạo xong artist rồi mới tạo được album
            Album album = new Album { Title = "Thuy Nga 1", ArtistId = artist.ArtistId };
            context.AddToAlbums(album);
            context.SaveChanges();
            demoQuery(artist.ArtistId);
        }

        

        /// Một số ví dụ:
        /// Lấy toàn bộ track của Albums có ID= 1 của nghệ sỹ có ID=1
        /// http://localhost:8000/DataService.svc/Artists(1)/Albums(1)/Tracks
        /// Hiện nhà sáng tác của Track(6), Album(1), nghệ sỹ (1)
        /// http://localhost:8000/DataService.svc/Artists(1)/Albums(1)/Tracks(6)/Composer


    }
}
